package sistema;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import usuarios.Pessoa;
import alugaveis.Aluguel;
import alugaveis.Midia;
import exceptions.ParametroNegativoException;

/**
 * Classe responsavel por salvar os dados em um arquivo serializado.
 * 
 * @author Samir, Mateus, Ygor, Caio
 * 
 */
public class Serializavel implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	private List<Midia> midias;
	private List<Pessoa> pessoas;
	private List<Aluguel> aluguel;
	private static String url = System.getProperty("user.dir");

	public Serializavel() {
		midias = new ArrayList<Midia>();
		pessoas = new ArrayList<Pessoa>();
		aluguel = new ArrayList<Aluguel>();
	}

//	private Map<JButton, Musica> carregarMusicas() throws IOException {
//		Map<JButton, Musica> musicas = new HashMap<JButton, Musica>();
//		FileInputStream arquivo = null;
//		String[] linhaQuebrada;
//		try {
//			arquivo = new FileInputStream(new File(url + "/src/id3_tag.txt"));
//			Scanner sc = new Scanner(arquivo);
//			int cont = 0;
//			while (sc.hasNext()) {
//				cont++;
//				String linha = sc.nextLine();
//				linhaQuebrada = linha.split(":");
//				Musica musica = criarMusica(linhaQuebrada);
//				musicas.put(musica.getBotao(), musica);
//			}
//		} catch (Exception e) {
//			System.err.println("Nao carregou as musicas!");
//		} finally {
//			if (arquivo != null)
//				arquivo.close();
//		}
//		return musicas;
//	}

//	private Musica criarMusica(String[] linhaQuebrada) {
//		Musica musica = new Musica(linhaQuebrada[0].trim(),
//				linhaQuebrada[1].trim(), linhaQuebrada[2].trim(),
//				linhaQuebrada[3].trim(), linhaQuebrada[4].trim(), url
//						+ linhaQuebrada[5].trim().replace("./", "/"));
//		return musica;
//	}

	public Serializavel getInstance() {
		return this;
	}
	
//	public void addUsuario(Usuario usu) {
//		usuariosCadastrados.put(usu.getEmail(), usu);
//	}
//
//	public Map<String, Usuario> getUsuariosCadastrados() {
//		return usuariosCadastrados;
//	}
//
//	public Map<JButton, Musica> getMusicas() {
//		return musicas;
//	}

	public void serializar(Serializable arquivo) throws IOException {
		ObjectOutputStream out = null;
		try {
			out = new ObjectOutputStream(new FileOutputStream(
					"serializavel.ser"));
			out.writeObject(arquivo);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			out.close();
		}
	}
}